// nums[l, x]和nums[x+1, r]都是有序的；且nums[l] >= nums[r]
// 要找最小值，则从右边开始找
int findMin(int* nums, int numsSize){
    int l = 0, r = numsSize-1;
    while (l < r) {
        int mid = l + (r - l) / 2;
        // 通过比较中值与右值，可以确定最小值的位置范围，从而决定边界收缩的方向。
        if (nums[mid] <= nums[r]) r = mid; // 最小值应该在r的左边
        else l = mid + 1;   // mid在左半部分
    }
    return nums[l];
}